﻿#pragma once

#include "../../Shared/Enums.h"
#include <unordered_map>
#include <vector>

//C# TO C++ CONVERTER NOTE: Forward class declarations:
namespace Client::MirObjects { class Frame; }

namespace Client::MirObjects
{
    class FrameSet : public std::unordered_map<MirAction, Frame*>
    {
    public:
        static FrameSet *Player;
        static FrameSet *DefaultNPC;
        static FrameSet *DefaultMonster;
        static std::vector<FrameSet*> DragonStatue;
        static std::vector<FrameSet*> GreatFoxSpirit;
        static std::vector<FrameSet*> HellBomb;
        static std::vector<FrameSet*> CaveStatue;

    private:
        class StaticConstructor
        {
        public:
            StaticConstructor();
        };

    private:
        static FrameSet::StaticConstructor staticConstructor;

    };

    class Frame
    {
    public:
        int Start = 0, Count = 0, Skip = 0, EffectStart = 0, EffectCount = 0, EffectSkip = 0;
        int Interval = 0, EffectInterval = 0;
        bool Reverse = false, Blend = false;

        int getOffSet() const;

        int getEffectOffSet() const;

        Frame(int start, int count, int skip, int interval, int effectstart = 0, int effectcount = 0, int effectskip = 0, int effectinterval = 0);

        Frame(BinaryReader *reader);
    };

}
